# helloworld_syscall.s
.data                           # 数据段声明

# 系统调用号
.equ SYS_WRITE, 1
.equ SYS_EXIT,  60

# 定义要输出的字符串
msg : .string "Hello World!\n"  # 要输出的字符串
len = . - msg                   # 字符串长度

.text                           # 代码段声明
.global _start                  # 指定入口函数
_start:
    # write(1, msg, len)    
    mov     $len, %rdx          # 参数三：字符串长度
    mov     $msg, %rsi          # 参数二：要显示的字符串
    mov     $1, %rdi            # 参数一：文件描述符（stdout）
    mov     $SYS_WRITE, %rax    # 系统调用号（sys_write）
    syscall                     # 调用内核功能

    # exit(0)
    mov     $0, %rdi
    mov     $SYS_EXIT, %rax
    syscall

# to run this file, follow the commands below
# $ as helloworld_syscall.s -o helloworld_syscall.o
# $ ld helloworld_syscall.o -o helloworld_syscall
# $ ./helloworld_syscall 
# Hello World!
